/*
 * All rights Reserved, Designed By DataDriver
 * Copyright:    DataDriver.Inc
 * Company:      Zhuo Wo Infomation Technology (ShangHai) CO.LTD
 */
package com.sun.aware;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

/**
 * 自定义Aware;
 * 在Spring的底层，存在大量的组件xxxAware；
 * 为我们提供了可以使用Spring底层对象的功能；
 * 类似于回调函数的风格，只要我们实现Aware接口，就能在IOC容器初始化时调用相关的方法
 *
 * 把Spring底层的自己的组件注入的IOC容器中，只要我们实现对应的xxxAware接口就行
 */

@Component
public class MyDefinitionAware implements ApplicationContextAware {

    /**
     * 实现上下文的操作
     * @param applicationContext
     * @throws BeansException
     */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        Environment environment = applicationContext.getEnvironment();
        String property = environment.getProperty("os.name");
        System.out.println(property);
    }
}
